<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>CompressorStream (PNGJ 2.1.0-SNAPSHOT API)</title>
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="CompressorStream (PNGJ 2.1.0-SNAPSHOT API)";
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!--   -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/CompressorStream.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev Class</li>
<li><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStreamDeflater.html" title="class in ar.com.hjg.pngj.pixels"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?ar/com/hjg/pngj/pixels/CompressorStream.html" target="_top">Frames</a></li>
<li><a href="CompressorStream.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">ar.com.hjg.pngj.pixels</div>
<h2 title="Class CompressorStream" class="title">Class CompressorStream</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">java.io.OutputStream</a></li>
<li>
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/FilterOutputStream.html?is-external=true" title="class or interface in java.io">java.io.FilterOutputStream</a></li>
<li>
<ul class="inheritance">
<li>ar.com.hjg.pngj.pixels.CompressorStream</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/Flushable.html?is-external=true" title="class or interface in java.io">Flushable</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/AutoCloseable.html?is-external=true" title="class or interface in java.lang">AutoCloseable</a></dd>
</dl>
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStreamDeflater.html" title="class in ar.com.hjg.pngj.pixels">CompressorStreamDeflater</a>, <a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStreamLz4.html" title="class in ar.com.hjg.pngj.pixels">CompressorStreamLz4</a></dd>
</dl>
<hr>
<br>
<pre>public abstract class <span class="strong">CompressorStream</span>
extends <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/FilterOutputStream.html?is-external=true" title="class or interface in java.io">FilterOutputStream</a></pre>
<div class="block">This is an OutputStream that compresses (via Deflater or a deflater-like object), and optionally
 passes the compressed stream to another output stream.
 
 It allows to compute in/out/ratio stats.
 
 It works as a stream (similar to DeflaterOutputStream), but it's peculiar in that it expects that
 each writes has a fixed length (other lenghts are accepted, but it's less efficient) and that the
 total amount of bytes is known (so it can close itself, but it can also be closed on demand) In
 PNGJ use, the block is typically a row (including filter byte).
 
 We use this to do the real compression (with Deflate) but also to compute tentative estimators
 
 If not closed, it can be recicled via reset()</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field_summary">
<!--   -->
</a>
<h3>Field Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected int</code></td>
<td class="colLast"><code><strong><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStream.html#block">block</a></strong></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStream.html#blockLen">blockLen</a></strong></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected long</code></td>
<td class="colLast"><code><strong><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStream.html#bytesIn">bytesIn</a></strong></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected long</code></td>
<td class="colLast"><code><strong><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStream.html#bytesOut">bytesOut</a></strong></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStream.html#done">done</a></strong></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStream.html#os">os</a></strong></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStream.html#storeFirstByte">storeFirstByte</a></strong></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><strong><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStream.html#totalbytes">totalbytes</a></strong></code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="fields_inherited_from_class_java.io.FilterOutputStream">
<!--   -->
</a>
<h3>Fields inherited from class&nbsp;java.io.<a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/FilterOutputStream.html?is-external=true" title="class or interface in java.io">FilterOutputStream</a></h3>
<code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/FilterOutputStream.html?is-external=true#out" title="class or interface in java.io">out</a></code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_summary">
<!--   -->
</a>
<h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStream.html#CompressorStream(java.io.OutputStream, int, long)">CompressorStream</a></strong>(<a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;os,
                int&nbsp;blockLen,
                long&nbsp;totalbytes)</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStream.html#close()">close</a></strong>()</code>
<div class="block">Releases resources.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><strong><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStream.html#done()">done</a></strong>()</code>
<div class="block">Will be called automatically when the number of bytes reaches the total expected Can be also be
 called from outside.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStream.html#flush()">flush</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><strong><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStream.html#getBytesCompressed()">getBytesCompressed</a></strong>()</code>
<div class="block">compressed (out) bytes.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><strong><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStream.html#getBytesRaw()">getBytesRaw</a></strong>()</code>
<div class="block">raw (input) bytes.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>double</code></td>
<td class="colLast"><code><strong><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStream.html#getCompressionRatio()">getCompressionRatio</a></strong>()</code>
<div class="block">compressed/raw.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>byte[]</code></td>
<td class="colLast"><code><strong><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStream.html#getFirstBytes()">getFirstBytes</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStream.html#getOs()">getOs</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStream.html#isClosed()">isClosed</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStream.html#isDone()">isDone</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected abstract void</code></td>
<td class="colLast"><code><strong><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStream.html#mywrite(byte[], int, int)">mywrite</a></strong>(byte[]&nbsp;b,
       int&nbsp;off,
       int&nbsp;len)</code>
<div class="block">same as write, but guarantedd to not exceed blockLen The implementation should update bytesOut
 and bytesInt but not check for totalBytes</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStream.html#reset()">reset</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStream.html#reset(java.io.OutputStream)">reset</a></strong>(<a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;os)</code>
<div class="block">resets and sets a new outputstream</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStream.html#setStoreFirstByte(boolean, int)">setStoreFirstByte</a></strong>(boolean&nbsp;storeFirstByte,
                 int&nbsp;nblocks)</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStream.html#write(byte[])">write</a></strong>(byte[]&nbsp;b)</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStream.html#write(byte[], int, int)">write</a></strong>(byte[]&nbsp;b,
     int&nbsp;off,
     int&nbsp;len)</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStream.html#write(int)">write</a></strong>(int&nbsp;b)</code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field_detail">
<!--   -->
</a>
<h3>Field Detail</h3>
<a name="os">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>os</h4>
<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a> os</pre>
</li>
</ul>
<a name="blockLen">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>blockLen</h4>
<pre>public final&nbsp;int blockLen</pre>
</li>
</ul>
<a name="totalbytes">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>totalbytes</h4>
<pre>public final&nbsp;long totalbytes</pre>
</li>
</ul>
<a name="done">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>done</h4>
<pre>protected&nbsp;boolean done</pre>
</li>
</ul>
<a name="bytesIn">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>bytesIn</h4>
<pre>protected&nbsp;long bytesIn</pre>
</li>
</ul>
<a name="bytesOut">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>bytesOut</h4>
<pre>protected&nbsp;long bytesOut</pre>
</li>
</ul>
<a name="block">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>block</h4>
<pre>protected&nbsp;int block</pre>
</li>
</ul>
<a name="storeFirstByte">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>storeFirstByte</h4>
<pre>protected&nbsp;boolean storeFirstByte</pre>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_detail">
<!--   -->
</a>
<h3>Constructor Detail</h3>
<a name="CompressorStream(java.io.OutputStream, int, long)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>CompressorStream</h4>
<pre>public&nbsp;CompressorStream(<a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;os,
                int&nbsp;blockLen,
                long&nbsp;totalbytes)</pre>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>os</code> - Can be null (if we are only interested in compute compression ratio)</dd><dd><code>blockLen</code> - Estimated maximum block length. If unknown, use -1.</dd><dd><code>totalbytes</code> - Expected total bytes to be fed. If unknown, use -1.</dd></dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="close()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>close</h4>
<pre>public&nbsp;void&nbsp;close()</pre>
<div class="block">Releases resources. Does NOT close the OuputStream. Idempotent.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/Closeable.html?is-external=true#close()" title="class or interface in java.io">close</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a></code></dd>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/AutoCloseable.html?is-external=true#close()" title="class or interface in java.lang">close</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/AutoCloseable.html?is-external=true" title="class or interface in java.lang">AutoCloseable</a></code></dd>
<dt><strong>Overrides:</strong></dt>
<dd><code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/FilterOutputStream.html?is-external=true#close()" title="class or interface in java.io">close</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/FilterOutputStream.html?is-external=true" title="class or interface in java.io">FilterOutputStream</a></code></dd>
</dl>
</li>
</ul>
<a name="done()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>done</h4>
<pre>public abstract&nbsp;void&nbsp;done()</pre>
<div class="block">Will be called automatically when the number of bytes reaches the total expected Can be also be
 called from outside. This should set the flag done=true</div>
</li>
</ul>
<a name="write(byte[], int, int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>write</h4>
<pre>public final&nbsp;void&nbsp;write(byte[]&nbsp;b,
         int&nbsp;off,
         int&nbsp;len)</pre>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/FilterOutputStream.html?is-external=true#write(byte[], int, int)" title="class or interface in java.io">write</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/FilterOutputStream.html?is-external=true" title="class or interface in java.io">FilterOutputStream</a></code></dd>
</dl>
</li>
</ul>
<a name="mywrite(byte[], int, int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>mywrite</h4>
<pre>protected abstract&nbsp;void&nbsp;mywrite(byte[]&nbsp;b,
           int&nbsp;off,
           int&nbsp;len)</pre>
<div class="block">same as write, but guarantedd to not exceed blockLen The implementation should update bytesOut
 and bytesInt but not check for totalBytes</div>
</li>
</ul>
<a name="write(byte[])">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>write</h4>
<pre>public final&nbsp;void&nbsp;write(byte[]&nbsp;b)</pre>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/FilterOutputStream.html?is-external=true#write(byte[])" title="class or interface in java.io">write</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/FilterOutputStream.html?is-external=true" title="class or interface in java.io">FilterOutputStream</a></code></dd>
</dl>
</li>
</ul>
<a name="write(int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>write</h4>
<pre>public&nbsp;void&nbsp;write(int&nbsp;b)
           throws <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/FilterOutputStream.html?is-external=true#write(int)" title="class or interface in java.io">write</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/FilterOutputStream.html?is-external=true" title="class or interface in java.io">FilterOutputStream</a></code></dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
</li>
</ul>
<a name="reset()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>reset</h4>
<pre>public&nbsp;void&nbsp;reset()</pre>
</li>
</ul>
<a name="reset(java.io.OutputStream)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>reset</h4>
<pre>public&nbsp;void&nbsp;reset(<a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;os)</pre>
<div class="block">resets and sets a new outputstream</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>os</code> - </dd></dl>
</li>
</ul>
<a name="getCompressionRatio()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCompressionRatio</h4>
<pre>public final&nbsp;double&nbsp;getCompressionRatio()</pre>
<div class="block">compressed/raw. This should be called only when done</div>
</li>
</ul>
<a name="getBytesRaw()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getBytesRaw</h4>
<pre>public final&nbsp;long&nbsp;getBytesRaw()</pre>
<div class="block">raw (input) bytes. This should be called only when done</div>
</li>
</ul>
<a name="getBytesCompressed()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getBytesCompressed</h4>
<pre>public final&nbsp;long&nbsp;getBytesCompressed()</pre>
<div class="block">compressed (out) bytes. This should be called only when done</div>
</li>
</ul>
<a name="getOs()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOs</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;getOs()</pre>
<dl><dt><span class="strong">Returns:</span></dt><dd>the output stream : warning, it can be null</dd></dl>
</li>
</ul>
<a name="flush()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>flush</h4>
<pre>public&nbsp;void&nbsp;flush()</pre>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/Flushable.html?is-external=true#flush()" title="class or interface in java.io">flush</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/Flushable.html?is-external=true" title="class or interface in java.io">Flushable</a></code></dd>
<dt><strong>Overrides:</strong></dt>
<dd><code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/FilterOutputStream.html?is-external=true#flush()" title="class or interface in java.io">flush</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/FilterOutputStream.html?is-external=true" title="class or interface in java.io">FilterOutputStream</a></code></dd>
</dl>
</li>
</ul>
<a name="isClosed()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isClosed</h4>
<pre>public&nbsp;boolean&nbsp;isClosed()</pre>
</li>
</ul>
<a name="isDone()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isDone</h4>
<pre>public&nbsp;boolean&nbsp;isDone()</pre>
</li>
</ul>
<a name="getFirstBytes()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFirstBytes</h4>
<pre>public&nbsp;byte[]&nbsp;getFirstBytes()</pre>
</li>
</ul>
<a name="setStoreFirstByte(boolean, int)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>setStoreFirstByte</h4>
<pre>public&nbsp;void&nbsp;setStoreFirstByte(boolean&nbsp;storeFirstByte,
                     int&nbsp;nblocks)</pre>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!--   -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/CompressorStream.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev Class</li>
<li><a href="../../../../../ar/com/hjg/pngj/pixels/CompressorStreamDeflater.html" title="class in ar.com.hjg.pngj.pixels"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?ar/com/hjg/pngj/pixels/CompressorStream.html" target="_top">Frames</a></li>
<li><a href="CompressorStream.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2014. All rights reserved.</small></p>
</body>
</html>
